package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @ClassName : CardLayoutDemo
 * @Author : LV88VL
 * @Date: 2021/3/22 16:17
 * @Description : 卡片布局管理器
 *                      CardLayout：
 *                      常用方法：
 *                          public void first（Container parent）:显示容器的第一张卡片
 *                          public void last（Container parent）:显示容器的最后一张卡片
 *                          public void previous（Container parent）:显示容器的上一张卡片
 *                          public void next（Container parent）:显示容器的下一张卡片
 *                          public void show（Container parent，String name）:显示容器中为name的组件
 *
 */
//定义一个Cardlayout类，继承Frame类，实现ActionListener接口
class Cardlayout extends Frame implements ActionListener{

    //定义Pane面板放置卡片
    Panel cardPanel = new Panel();
    //定义Panel面板放置按钮
    Panel controlPanel = new Panel();
    //创建按钮
    Button nextButton,preButton;
    //定义卡片布局对象
    CardLayout cardLayout=new CardLayout();
    public Cardlayout(){
        //设置窗体大小
        this.setSize(300,200);
        //设置窗体可见
        this.setVisible(true);
        //为窗体添加关闭事件的监听器
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                Cardlayout.this.dispose();
            }
        });
        //设置cardPanel面向对象为布局卡片
        cardPanel.setLayout(cardLayout);
        //在cardPanel面向添加文本标签
        cardPanel.add(new Label("第一个界面",Label.CENTER));
        cardPanel.add(new Label("第二个界面",Label.CENTER));
        cardPanel.add(new Label("第三个界面",Label.CENTER));
        //创建两个按钮
        nextButton=new Button("下一张卡片");
        preButton=new Button("上一张卡片");
        //为按钮对象注册监听器
        nextButton.addActionListener(this);
        preButton.addActionListener(this);
        //将按钮添加到controlPanel中
        controlPanel.add(preButton);
        controlPanel.add(nextButton);
        //将cardPanel设置在窗口边界布局的中间，Frame默认边界布局
        this.add(cardPanel,BorderLayout.CENTER);
        //将ControlPanel设置在窗口边界的南区
        this.add(controlPanel,BorderLayout.SOUTH);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        //如果用户单击nextButton，执行语句：
        if(e.getSource()==nextButton){
            cardLayout.next(cardPanel);
        }
        if (e.getSource()==preButton) {
            cardLayout.previous(cardPanel);
        }
    }
}
public class CardLayoutDemo {
    public static void main(String[] args) {
        new Cardlayout();
    }
}
